Node.js এ Buffers হল এমন একটি ডাটা স্ট্রাকচার যা বাইনারি ডাটা (যেমন ফাইল বা নেটওয়ার্ক থেকে প্রাপ্ত ডাটা) প্রসেস করতে ব্যবহৃত হয়। JavaScript সাধারণত স্ট্রিং এবং অবজেক্ট সহ কাজ করে, কিন্তু বাইনারি ডাটা পরিচালনা করতে Buffers ব্যবহার করা হয়। Buffers এক ধরনের অ্যাসিনক্রোনাস ডাটা হ্যান্ডলিং ফিচার, যা Node.js এর ফাইল সিস্টেম বা নেটওয়ার্ক অপারেশনগুলিতে ব্যবহৃত হয়, যেখানে বাইনারি ডাটা প্রক্রিয়াকরণের প্রয়োজন হয়।
বাফার সাধারণত বাইনারি ডাটা ম্যানিপুলেশন, যেমন ফাইল পড়া, ইমেজ বা ভিডিও ফাইল থেকে ডাটা এক্সট্র্যাক্ট করা, নেটওয়ার্কিং, বা ডেটাবেস ইন্টারঅ্যাকশন ইত্যাদির জন্য ব্যবহৃত হয়।
১. Buffer তৈরি করা
Node.js এ Buffer একটি বিশেষ ধরনের অবজেক্ট যা বাইনারি ডাটা ধারণ করে। এটি Buffer.alloc(), Buffer.from(), অথবা new Buffer() এর মাধ্যমে তৈরি করা যেতে পারে (যদিও new Buffer() এখন পুরানো এবং deprecated, তাই Buffer.alloc() বা Buffer.from() ব্যবহার করা উত্তম)।
Buffer.alloc() ব্যবহার করা
Buffer.alloc() একটি নির্দিষ্ট সাইজের একটি নতুন বাফার তৈরি করে এবং সমস্ত বাইট শূন্য দিয়ে পূর্ণ করে।
const buffer = Buffer.alloc(10); // 10 বাইটের একটি বাফার তৈরি করা হচ্ছে
console.log(buffer); // <Buffer 00 00 00 00 00 00 00 00 00 00>Buffer.from() ব্যবহার করা
Buffer.from() একটি স্ট্রিং, অ্যারে বা অন্য একটি বাফার থেকে নতুন বাফার তৈরি করতে ব্যবহৃত হয়।
const buffer = Buffer.from('Hello, world!', 'utf-8'); // UTF-8 এনকোডিং দিয়ে স্ট্রিং থেকে বাফার তৈরি
console.log(buffer); // <Buffer 48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 21>এখানে, Buffer.from() ফাংশনটি স্ট্রিং 'Hello, world!' কে বাফারে রূপান্তরিত করেছে।
২. Buffer থেকে ডাটা পড়া
Buffer একটি বাইনারি ডাটা ধারণ করে, এবং আপনি বিভিন্ন পদ্ধতিতে তার মধ্যে থাকা ডাটা অ্যাক্সেস করতে পারেন।
Buffer থেকে স্ট্রিং পড়া
Buffer থেকে স্ট্রিং রিটার্ন করতে toString() মেথড ব্যবহার করা হয়:
const buffer = Buffer.from('Hello, world!', 'utf-8');
console.log(buffer.toString('utf-8')); // "Hello, world!"Buffer থেকে নম্বর পড়া
Buffer এ একটি নির্দিষ্ট পজিশন থেকে ৮-বিট, ১৬-বিট বা ৩২-বিট সংখ্যার মান পড়তে readUInt8(), readUInt16LE(), বা readUInt32LE() মেথড ব্যবহার করা হয়।
const buffer = Buffer.alloc(4);
buffer.writeUInt8(255, 0); // 255 কে 0 পজিশনে লিখে
buffer.writeUInt8(128, 1); // 128 কে 1 পজিশনে লিখে
console.log(buffer); // <Buffer ff 80 00 00>এখানে, writeUInt8() দিয়ে একটি ৮-বিট unsigned ইন্টিজার লিখা হয়েছে এবং Buffer এর নির্দিষ্ট পজিশনে সংখ্যাটি জমা করা হয়েছে।
৩. Buffer ম্যানিপুলেশন
Buffer এর ডাটা পরিবর্তন করতে আপনি সরাসরি তাকে modify করতে পারেন। যেমন, কোনও নির্দিষ্ট পজিশনে ডাটা লিখে দেওয়া, নতুন ডাটা অ্যাড করা ইত্যাদি।
ডাটা লেখা
write() মেথড দিয়ে একটি নির্দিষ্ট পজিশনে ডাটা লেখা যায়।
const buffer = Buffer.alloc(10);
buffer.write('Hello');
console.log(buffer); // <Buffer 48 65 6c 6c 6f 00 00 00 00 00>এখানে, "Hello" স্ট্রিংটি বাফারের প্রথম পাঁচটি বাইটে লেখা হয়েছে। বাকি বাইটগুলি শূন্য থাকবে।
Buffer একে অপরের সাথে যুক্ত করা
Buffer.concat() মেথড ব্যবহার করে একাধিক বাফারকে যুক্ত করা যায়।
const buffer1 = Buffer.from('Hello, ');
const buffer2 = Buffer.from('world!');
const combined = Buffer.concat([buffer1, buffer2]);
console.log(combined.toString()); // "Hello, world!"এখানে, দুটি বাফার একত্রিত করে একটি নতুন বাফার তৈরি করা হয়েছে।
৪. Buffer ব্যবহার করে ফাইলের বাইনারি ডাটা পড়া
Node.js এ fs মডিউল ব্যবহার করে আপনি বাইনারি ফাইলের ডাটা Buffer হিসেবে পড়তে পারেন। এটি সাধারণত ইমেজ, ভিডিও বা অন্যান্য বাইনারি ডাটা ফাইলের সাথে কাজ করতে ব্যবহৃত হয়।
ফাইল থেকে বাইনারি ডাটা পড়া
const fs = require('fs');
// ফাইল থেকে বাইনারি ডাটা পড়া
fs.readFile('image.png', (err, data) => {
if (err) {
console.log('Error:', err);
} else {
console.log('File data (Buffer):', data);
}
});এখানে, fs.readFile() মেথডটি একটি ফাইল থেকে বাইনারি ডাটা পড়ে এবং তা Buffer হিসেবে রিটার্ন করে। আপনি পরে এই ডাটা প্রসেস করতে পারবেন।
৫. Buffers এর মাধ্যমে ডাটা ট্রান্সফার এবং নেটওয়ার্কিং
Buffers বিভিন্ন নেটওয়ার্ক অপারেশনে ব্যবহৃত হয়, যেমন TCP/UDP সোকেটের মাধ্যমে বাইনারি ডাটা ট্রান্সফার করা। এটি দ্রুত ডাটা স্থানান্তর করার জন্য কার্যকরী, কারণ বাইনারি ডাটা সরাসরি মেমোরিতে রাখা যায়।
const net = require('net');
const client = net.createConnection({ port: 8080 }, () => {
console.log('Connected to server!');
client.write(Buffer.from('Hello server!'));
});
client.on('data', (data) => {
console.log('Received from server:', data.toString());
client.end();
});এখানে, আমরা Buffer.from() ব্যবহার করে একটি স্ট্রিংকে বাইনারি ডাটায় রূপান্তর করেছি এবং একটি TCP সোকেটের মাধ্যমে সার্ভারে পাঠাচ্ছি।
সারাংশ
- Buffers Node.js এ বাইনারি ডাটা হ্যান্ডলিং এর জন্য একটি গুরুত্বপূর্ণ ডাটা স্ট্রাকচার। এটি অ্যাসিনক্রোনাস এবং নেটওয়ার্কিং অপারেশনে ব্যবহৃত হয়।
Buffer.alloc()এবংBuffer.from()ব্যবহার করে আপনি একটি বাফার তৈরি করতে পারেন, এবংtoString(),write(), এবংreadUInt8()এর মাধ্যমে বাফারে ডাটা ম্যানিপুলেট করতে পারেন।- আপনি Buffers ব্যবহার করে ফাইল, নেটওয়ার্কিং এবং বাইনারি ডাটা প্রসেসিং কার্যক্রম আরও কার্যকরী ও দ্রুত করতে পারেন।
Buffers Node.js এর গুরুত্বপূর্ণ অংশ, যা আপনাকে বাইনারি ডাটার উপর আরও নিয়ন্ত্রণ প্রদান করে এবং এর মাধ্যমে আপনি সহজে ইমেজ, ভিডিও, বা অন্যান্য বাইনারি ডাটা ফাইলের সাথে কাজ করতে পারেন।
Read more